home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / muds / pennmush.000 / pennmush-1.50-p8-linux.tar / pennmush / README < prev    next >
Text File  |  1993-04-21  |  23KB  |  434 lines

  1. ============================================================================
  2.                    User's Guide to PennMUSH
  3. ============================================================================
  4.  
  5. I.   Introduction
  6. II.  Installation Guide (new users)
  7. III. Conversion Guide (previous users)
  8. IV.  Additional Options
  9. V.   Trouble-shooting
  10. VI.  Comments
  11.  
  12. ============================================================================
  13.  
  14. I.   Introduction
  15.  
  16.      PennMUSH is a TinyMUD derivative, and one of the branches along the
  17. MUSH line. "Vanilla" TinyMUSH, which added the "v" registers and functions
  18. to the basic TinyMUD building commands, was written by Larry Foard. The
  19. code was later expanded by Jin, of MicroMUSH. In January of 1991, MicroMUSH
  20. changed its name to MicroMUSE, and the code there continued to develop
  21. under the MUSE name. At that same point in time, Moonchilde took the last
  22. public release of that code and began a series of improvements and extensions.
  23.  
  24.      That code was released as PernMUSH, named for the MUSH that Moonchilde
  25. was running. The last released version of that code was version 1.15, at
  26. the end of November 1991. PernMUSH itself had switched over to TinyMUSH 2.0,
  27. which Moonchilde had co-written with Glenn Crocker (Wizard of TinyCWRU);
  28. there was no longer a reason for Moonchilde to maintain this code.
  29.  
  30.      In January of 1992, Amberyl began working on the PernMUSH 1.15 code
  31. release, for TinyKrynn. She took over the code, which no one was supporting, 
  32. and is continuing to work on extending this code, as well as improving its
  33. compatibility with TinyMUSH 2.0.  She changed the name to PennMUSH
  34. (named for her school, the University of Pennsylvania), to avoid the
  35. confusion that resulted from PernMUSH actually running TinyMUSH 2.0.
  36. The latest version of this code is generally running at the Belgariad,
  37. at csa.bu.edu 4201.
  38.  
  39.      PennMUSH and TinyMUSH 2.0 are the only publicly available MUSH
  40. distributions; other MUSHes have private hacks, but do not support
  41. official distributions. PennMUSH is memory-based; TinyMUSH is 
  42. disk-based. PennMUSH can run in very little disk space, but very large
  43. databases (25,000+ objects) can take up a prohibitive amount of
  44. memory. TinyMUSH has a fairly large initial memory requirement,
  45. and uses a lot of disk space, but has the advantage of being more
  46. efficient, as well as a vastly slower rate of growth in memory usage,
  47. once the database gets to about ten thousand or so objects.
  48. It is possible to switch from PennMUSH to TinyMUSH, as well as vice
  49. versa, so you are not "stuck" with any one code.
  50.  
  51.       TinyMUSH 2.0 patchlevels 6+ are capable of reading in databases from
  52. PennMUSH versions 1.19 and earlier, and 1.50, with some tweaking, so if
  53. you later want to switch codes, that option is available. In addition,
  54. a program to convert TinyMUSH 2.0 databases to PennMUSH 1.50 format is
  55. available from Amberyl via email, so it's possible to switch back as well.
  56.  
  57.       A MUSH manual should be available at caisr2.caisr.cwru.edu,
  58. ftp.math.okstate.edu, primerd.prime.com, or from wherever you got this 
  59. code from. The manual should be numbered version 2.006 or higher.
  60.  
  61.       Enjoy!
  62.  
  63. ============================================================================ 
  64.  
  65. II.  Installation (new users)
  66.  
  67.      DISCLAIMER: Before attempting to run a MUD of any sort, you should
  68. have some reasonable knowledge of UNIX and C.  If you do not, it is
  69. _strongly_ suggested that you learn UNIX and C to some reasonable level
  70. of competency before attempting to set up a MUSH.
  71.  
  72.      The MUSH directories are organized fairly simply: source code is in
  73. the top-level directory with RWHO-related stuff is in the RWHO directory
  74. below it; all things related to running the game itself are in the "game"
  75. directory below. That directory contains four subdirectories -- "data"
  76. (current databases), "save" (backup databases), "txt" (text files), and
  77. "log" (log files).
  78.  
  79.      First, copy Makefile.dist to Makefile, options.h.dist to options.h, 
  80. and bigrams.h.dist to bigrams.h.  (Unlike previous versions, version.h
  81. is a standard file and does not need to be changed.)
  82.  
  83.      Then, edit options.h.  The file is fairly liberally commented.
  84. You should definitely read the entire thing before figuring out what
  85. you want to change.
  86.  
  87.      Ignore all the "ADD_<whatever>" config directives.  If you use
  88. the database provided with this distribution, you will not need to
  89. do any conversions, unless you choose to add the chat system.
  90.  
  91.      You will need to decide whether or not you want to use the chat
  92. system. Once you add this into your database, you can't get rid of
  93. it. If you don't ever want to use it, set the value of CHAT_SYSTEM
  94. in options.h to 0.
  95.  
  96.      If you decide you want the chat system, set the value of 
  97. CHAT_SYSTEM to 2. You will need to compile, start up the game, do
  98. a @shutdown, change the value of CHAT_SYSTEM in options.h to 3,
  99. recompile, and start the game up again. This ensures that the new
  100. database is will be correctly saved.
  101.  
  102.      The initial default chat channels are listed in chat.c. You 
  103. can change these defaults at runtime (read the help for @channel,
  104. and put the relevant commands on the @startup of an object).
  105.  
  106.      For now, you can probably leave bigrams.h untouched. You do
  107. not need to change any of the other header files.
  108.  
  109.      You next have to make sure you're set up for the IPC you need
  110. for your machine. The only IPC package which is guaranteed to work
  111. is bsd.c.  The concentrator code is only current through approximately
  112. version 1.16, and the xenix and xsocket code have not even been glanced
  113. at for the last year and a half. If you choose to use them and somehow
  114. manage to get them to work, please let Amberyl know so your changes can
  115. be included in the next release.
  116.  
  117.      Now, finally, edit the Makefile.  Pick your compiler, memory
  118. options, and other stuff.  For now, you will not want to run with
  119. any RWHO options, so just use the default there.
  120.  
  121.      Do a "make install". This will build all the necessary files, and 
  122. set up some symbolic links for the restart script.  You will need to use 
  123. "mkindx" to build the indexes for news and help (and events, if you're 
  124. using that). The format is 'mkindx <text file> <index file>'.  You must
  125. change the index file every time you change its associated text file. 
  126. The restart script automatically builds the indexes for you every time
  127. you start the game. You do not need to worry about the "extract"
  128. and "dump" utilities.
  129.  
  130.      The next step is to create your configuration file. In the game
  131. directory is a file called "mush.conf". You may want to rename it
  132. <your MUSH name>.conf.  This is a list of all runtime configuration
  133. options with their default settting. Change them as you see fit.
  134. IMPORTANT: do not _delete_ any parameters. They all need to be there.
  135.  
  136.      Next, you must edit the restart script. You will probably want
  137. to change the INDB to indb.Z, and you almost definitely will to change
  138. GAMEDIR. That should be whatever directory the restart script is in.
  139. You will also probably need to change the name of the configuration file,
  140. as well as possibly some of the other file names, depending on what you
  141. chose in the config file. The restart script is written for sh, and
  142. assumes a fairly standard Berkeley UNIX setup. If you're on a HP-UX 
  143. or SysV machine, for example, you may need to change the restart script 
  144. a bit (the ps options, for example). 
  145.  
  146.      You should now be ready to start the game.  This distribution comes 
  147. packaged with a basic database - a God character, starting room, and master 
  148. room. This file is called game/data/minimal.db.Z.  You will probably want 
  149. to rename this file  to indb.Z (it needs to be the same as INDB in the 
  150. restart script).  The god character "One" has a default password of
  151. "one", which you should change immediately (via @password).
  152. options.h has the Master Room as #2 by default; in the provided database,
  153. this room is created for you.
  154.  
  155.       If you're doing the chat conversion, remember that you need to 
  156. @shutdown and recompile with CHAT_SYSTEM changed to 3. Otherwise, you
  157. should be set -- all you have to do now is customize the .txt files in
  158. the game directory.
  159.  
  160.       The logfiles in the "log" directory generally contain useful
  161. information. You will probably want to read your main logfile (defined
  162. in the restart script) every time, since errors and other important
  163. messages get printed to that logfile.
  164.  
  165.       When you are ready to go public, you should send mail to Scott
  166. Goehring (mudlist@glia.biostr.washington.edu), and ask to be put on his 
  167. MUDlist. Tell him the email address of the administrator (probably you), 
  168. the type of MUD (PennMUSH version whatever), the name of the MUSH, the
  169. address, and any other relevant information, like its theme.
  170.  
  171.       If you have any problems, feel free to contact Amberyl via email
  172. at lwl@eniac.seas.upenn.edu. PLEASE include the version number you are 
  173. attempting to compile, the type of machine and operating system you are 
  174. using, and, if possible, the address of the MUSH.
  175.  
  176. ============================================================================
  177.  
  178. III.  Conversion Guide (previous users)
  179.  
  180.       This MUSH version will read databases along the main branch of
  181. MUSH evolution -- TinyMUD, vanilla TinyMUSH, MicroMUSH, and all
  182. Pern/PennMUSH versions. If you need to convert a TinyMUSH 2.0 database,
  183. please contact Amberyl, and she'll mail you an extension to 2.0 that will 
  184. dump a 1.50-readable flatfile.
  185.  
  186.       It might be necessary to do some conversions, depending on
  187. what version you are converting from. The "ADD_<whatever>" options
  188. in options.h govern the conversions; to convert, compile with whatever
  189. ADD options you need defined, start up the game, do a @shutdown,
  190. recompile with those options turned off, and then start the game again.
  191.  
  192.       If you are upgrading from 1.50.p7, you will not need to do any
  193. conversions. From PennMUSH 1.50 versions before patchlevel 7, you will
  194. need to define ADD_POWERS. If you have a 1.x MUSH database dating before
  195. 1.50, you should ftp PennMUSH 1.50 patchlevel 5, and convert your database
  196. to 1.50 format, then follow the directions for ADD_POWERS above.
  197.  
  198.       If you do not do the conversion correctly, when you attempt
  199. to start the game, you will get an error message like "bad attribute"
  200. in the logfile, and the MUSH will refuse to start. You will definitely
  201. want to back up your database before attempting to do any conversions.
  202.  
  203.       If you are upgrading from patchlevel 5 or earlier, please note
  204. that  in patchlevel 6, compile-time configuration options were moved
  205. into options.h, and the restart script was written in sh instead of csh.
  206.  
  207.       Please read the CHANGES files. They contain a large amount of
  208. important information. A list of code changes that affect players is
  209. given in news.txt. You may want to clip that section for your own news file.
  210.  
  211. ============================================================================
  212.  
  213. IV.   Additional Options
  214.  
  215.       There are two additional major things which you can change. One
  216. is to use a tuned bigram table; using this will probably improve internal
  217. compression, thus reducing the amount of memory the MUSH takes up. Until
  218. your MUSH reaches 5000 objects, this is probably not bothering with.
  219. Details on how to get a tuned bigram table are given in the file BIGRAMS.
  220.  
  221.        MUSH also provides an interface for connecting to an RWHO server.
  222. RWHO servers allow players to see who is connected to many MUDs via
  223. telnet, or, if the administrator allows it, via a direct RWHO command
  224. from the game.
  225.  
  226.        There are three possible options for RWHO. The first is not to
  227. use it. This is the default, and you can feel free to just keep it
  228. that way.
  229.  
  230.         The second option is to send login info to a remote RWHO server.
  231. This option is highly recommended, since it is simple and painless. It 
  232. uses UDP to send the info, so there will be no slowdown of the game by 
  233. enabling this. There are several steps to getting this set up.
  234.  
  235.         1)  Contact the administrator of an RWHO server and ask if you can
  236.             send login info to that server. The names of administrators
  237.             are generally in the MUDlist posted to rec.games.mud.misc.
  238.             One of the larger servers is run by Moira (Jennifer Smith,
  239.             jds@moebius.math.okstate.edu).  Try sending her mail, with
  240.             the name and address of your MUSH.
  241.         2)  The administrator will probably send you mail back within a
  242.             day or two, with additional info. You will get a password
  243.             and an address for the RWHO server. Change the appropriate
  244.             things in options.h and recompile. You should then be set.
  245.  
  246.         The third option is to send info to the RWHO server, AND enable
  247. reading RWHO server info from within the MUSH (via the RWHO command).
  248. This is a BAD idea unless the RWHO server and the MUSH are on the same
  249. LOCAL network. The reason for this is that retrieving RWHO info uses
  250. a stream port, and the MUSH could freeze if the net between it and the
  251. RWHO server went down. If you MUST run this way, you might want to talk
  252. to mjr@decuac.dec.com about how to set up your own RWHO server.
  253.  
  254.     Another option you may want to consider is allowing your MUSH
  255. to receive remote messages from other MUSHes via rpage. This uses UDP,
  256. and does not slow down or otherwise endanger the MUSH.  If you wish to
  257. do this, you should contact Amberyl to get the rpage code, and compile
  258. with ALLOW_RPAGE defined.
  259.  
  260.         You should then contact the Gods of some other MUSHes. You will
  261. need, for each MUSH, to agree on a password. You will need to do a:
  262. rpage/add OtherMUSH password=address.of.other.mush
  263. and the God of the other MUSH will need to do a:
  264. rpage/add YourMUSH password=address.of.your.mush
  265.  
  266.         The name of the MUSH must be the same as that in "@version",
  267. aliases are allowed for additional entries, but one entry MUST be the
  268. name the MUSH uses in its conf file.
  269.  
  270.         The final thing you may want to think about is compiling announce.c
  271. That is a port announcer; if your MUSH ever goes down, you can set that up,
  272. and a message will be given to a person attempting to connect to that port.
  273. Read that file for details. It is not an official MUSH piece of code; rather,
  274. it is a freely distributable program available via anonymous FTP that is
  275. included in this code because it happens to be fairly useful.
  276.  
  277. ============================================================================
  278.  
  279. V.      Trouble-shooting
  280.  
  281.         If you ever run into trouble, the your first reaction should
  282. ALWAYS be to back up your database. indb.Z.old is the file that the
  283. MUSH saves indb.Z to when the game, restarted, indb.Z is the file that 
  284. the MUSH loaded at startup, and outdb.Z is the file to which the MUSH
  285. is currently dumping the database.
  286.  
  287.         You can tell if a dump is (theoretically) complete by doing a 
  288. "zcat <database file name> | tail -10".  The last line should read 
  289. "***END OF DUMP***". If it doesn't, your database has been truncated
  290. for some reason. Check the logfile. Possible causes include a full
  291. process table, a full disk partition, or running out of disk quota.
  292.  
  293.         Occasionally the dump process may dump core. This is caused
  294. by some sort of corruption in an attribute, normally. You can tell
  295. if the dump process has died by looking in your data directory; you
  296. will see something like "outdb.Z.#5#". Wait a few moments and check
  297. on the file again. If it has grown, then the game is in the process
  298. of a normal dump. If it hasn't, and there's a core file, then something
  299. has gone wrong. You should definitely shout a warning that building
  300. is not being saved.
  301.  
  302.         To attempt to fix the problem, do a @dbck to take care of any 
  303. possible minor weirdness in the database, then try doing a "@dump/paranoid", 
  304. and reading the checkpoint logfile (default is log/checkpt.log). This is 
  305. slow, but it will write out an uncorrupted database, and tell you what it 
  306. fixed. Back up that database and indb.Z, then figure out what you're going 
  307. to do next: you can take the game down with a kill -9, or attempt to 
  308. manually fix the problem by either @destroying the offending object, or 
  309. attempting to reset the attributes on the object that are causing a problem.
  310. If "@dump/paranoid" dies, you are more or less out of luck.
  311.  
  312.         To fix weirdness in numerical fields, such as location or flags,
  313. use the "examine/debug" and "@fixdb" commands.  Don't do this unless you
  314. know precisely what you're trying to fix, since it's possible to produce
  315. database inconsistencies which will panic, crash, or hang the server.
  316.  
  317.         The game may crash from time to time. It will generate a
  318. core file, usually; if you don't limit the coredumpsize or strip the
  319. executable, you should be able to get some useful information out of
  320. it, using a debugger. Amberyl is interested in stack traces. You can
  321. do a stack trace in the following manner: Go into the directory where
  322. you keep your source code, and type
  323. <name of debugger> netmud game/core
  324. If you don't call your executable "netmud", substitute in whatever
  325. you do call it.
  326.  
  327.         You are looking for variables set to bizarre values - attempts
  328. to access objects that aren't there, attempts to use pointers which
  329. point to nothing, and the like.
  330.  
  331.         If you are using the "adb" debugger (don't do this unless
  332. you really have absolutely nothing else available), you will see
  333. nothing. It's loaded and ready, though. Type "$c". This will print
  334. out a list of the functions it called. Type "$q" to quit. You can't
  335. really get much more useful information out of adb.
  336.  
  337.         If you are using the "dbx" debugger, type "where" to see
  338. the stack trace. You can move through it using "up" and "down",
  339. and see exactly what the sequence of calls was. You can also use
  340. "print <variable name>" to see the value of a variable at the
  341. time the game crashed.  The "gdb" debugger is similar to "dbx"; with
  342. that, you can abbreviate "print" as "p".
  343.  
  344.         Amberyl appreciates news of any bugs found, and any patches
  345. that have been written to deal with them. She is also interested in
  346. any extensions that people make to the code, and requests that ones
  347. that are of more than just local interest be sent to her for inclusion
  348. in the next release of this code.
  349.  
  350.         One important thing to remember is, if the MUSH refuses to
  351. start, there is probably a good reason. Check the MUSH log, and the
  352. core file, if there is one. Make sure to back up your database before
  353. attempting to restart -- remember that every time it restarts, it
  354. overwrites indb.Z.old. If you restart three times and somehow manage
  355. to trash your database each time (for example, a full process table
  356. zero'ing out your files), you won't have a backup to restart from,
  357. unless you've backed up your database before trying!
  358.  
  359.         This code has been tested on a fairly wide variety of machines
  360. and operating systems. JT Traub (Moonchilde, jt1o@andrew.cmu.edu) ran
  361. it on a DECstation; Ambar (ambar@cygnus.com) later worked with JT on
  362. stabilizing the code on a NeXT, where it eventually was rock-solid stable.
  363. Currently, Amberyl is working on a Sun SPARC-series workstation, and
  364. doing fairly extensive testing on an IBM RS/6000, a MicroVAX II, and
  365. various SGI workstations. There's no real reason why PennMUSH shouldn't
  366. compile on a machine with a BSD-derived operating system and an ANSI
  367. compliant compiler (non-ANSI compilers should also work, but no guarantees
  368. are given here). It should probably should run under anything System V-ish
  369. with some juggling of #include files and other  modifications (tell Amberyl
  370. if you needed to make major changes to get it working). 
  371.         This version of code was sucessfully compiled on a several different
  372. Sun Sparc-series computers running SunOS 4.1.1, 4.1.2, and 4.1.3, a NeXT
  373. running Mach 2.1, some DEC machines running various versions of Ultrix, an
  374. IBM RS/6000 running AIX 3.2, and some SGI workstations running IRIX 4.0.5. 
  375. Previous versions have worked on an HP 9000/720 running HP-UX 8.0 and
  376. various 486 PCs running Linux; this version should, as well.
  377.  
  378.         If you have serious problems, contact Amberyl and she will
  379. try to help you. Email is the best way to get a fast response;
  380. in an emergency, you can bother her on a MUD, but for code problems,
  381. email will probably get you a better response.
  382.  
  383. ============================================================================
  384.  
  385. VI.     Comments
  386.  
  387.         These are in the first person.  :)
  388.  
  389.         I've been working with this code for a year and a quarter now.
  390. I can't claim that it's particularly elegant or inspired; all I can say
  391. is that it works (most of the time), and that I've had fun writing it.
  392. I'm also hoping that it's quite readable; the sections I've added or
  393. revised tend to be quite heavily commented.
  394.  
  395.         I'm willing to support this code and listen to whatever complaints,
  396. suggestions, and screams for help you might have, with a great deal of 
  397. patience (usually). I am interested in any changes that you might make to 
  398. the code, as well as anything you might need to have done in order to get
  399. PennMUSH to compile and run on "unusual" systems.
  400.  
  401.         A number of people have been contributed a lot, directly and 
  402. indirectly, to PennMUSH; many of them are credited in copyright.h.  
  403. Read the file and embarrass them the next time you see them.  ;)
  404.  
  405.         PennMUSH 1.50 patchlevel 3 contains the promised parser rewrite.
  406. A great deal of the code is derived or directly taken from the TinyMUSH 2.0
  407. parser; credit goes to JT Traub (Moonchilde) and Glenn Crocker (Wizard)
  408. for writing the thing in the first place. In most cases, the 1.50 parser
  409. should now be functionally identical to the parser in TinyMUSH 2.0.9; 
  410. see the news file for a brief summary of the changes. Major differences 
  411. between the 1.50 and 2.0 parsers are almost certainly bugs, and should
  412. be reported to me.
  413.  
  414.         I am trying to keep extending the functionality of the server,
  415. while optimizing and rewriting things wherever possible.  Ideas for
  416. new features, and other discussion of this server should be sent to
  417. the 1.50 mailing list:  pennmush@med-itvax1.bu.edu
  418. I'm also working on another project, with several friends at Penn;
  419. we're writing an X-windows-based graphical MUD called PennMAX, for
  420. fun and academic credit.
  421.  
  422.         I do have a life, though, and academics/job/social stuff
  423. take priority. Thus, don't get too upset if it takes me a while to
  424. add your pet hack.  :)  I'm generally happy to discuss code and
  425. life in general, though, so if you see me on a MUSH, feel free to
  426. say hi.
  427.  
  428.         Enjoy your MUSH, and feel free to email for help.
  429.  
  430.  
  431.               --  Lydia Leong  (lwl@eniac.seas.upenn.edu)
  432.                   "Amberyl" just about everywhere
  433.  
  434.